package com.efuture.chaptersix

import java.io.File
/* @Description: Kotlin语言apply函数详解
 * @Auther: zhaoshanshan
 * @Date: 2022/03/11/8:11 下午
 */
fun main() {

    File("src/main/test.txt").myApply {
        setReadable(true)
        setWritable(true)
        println(readLines())
    }
}
//自定义apply函数 实现apply函数的功能
// private私有
// inline 因为我们的函数是高阶函数，需要使用内联对 lambda进行优化处理，提高性能
// fun <INPUT> 函数中声明一个泛型
// INPUT.mApply 让所有的类型，都可以 xxx.myApply  泛型扩展
//  INPUT.() -> Unit 让我们的匿名函数里面持有 this ,在lambda里面不需要返回值，因为永远都是返回INPUT本身
// lambda(this) 默认就有this
// 返回this的目的是可以链式调用
private inline fun<INPUT> INPUT.myApply(lambda:INPUT.()->Unit):INPUT{
    lambda(this)
    return this
}

